/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocio.Usuario;

import Banco.AcessoBanco;
import Banco.ParametroSQL;
import Negocio.Geral.Negocio;
import static Negocio.Geral.Negocio.NovaListaParametro;
import Negocio.Tipos.TipoPerfil;
import java.sql.ResultSet;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author willian
 */
public class Usuario {

    public int getCodigoCPF() {
        return CodigoCPF;
    }

    public void setCodigoCPF(int CodigoCPF) {
        this.CodigoCPF = CodigoCPF;
    }

    public int getCodigoUsuario() {
        return CodigoUsuario;
    }

    public void setCodigoUsuario(int CodigoUsuario) {
        this.CodigoUsuario = CodigoUsuario;
    }

    public Calendar getDataCadastro() {
        return DataCadastro;
    }

    public void setDataCadastro(Calendar DataCadastro) {
        this.DataCadastro = DataCadastro;
    }

    public String getEmailUsuario() {
        return EmailUsuario;
    }

    public void setEmailUsuario(String EmailUsuario) {
        this.EmailUsuario = EmailUsuario;
    }

    public String getLoginUsuario() {
        return LoginUsuario;
    }

    public void setLoginUsuario(String LoginUsuario) {
        this.LoginUsuario = LoginUsuario;
    }

    public String getNomeUsuario() {
        return NomeUsuario;
    }

    public void setNomeUsuario(String NomeUsuario) {
        this.NomeUsuario = NomeUsuario;
    }

    public String getSenhaUsuario() {
        return SenhaUsuario;
    }

    public void setSenhaUsuario(String SenhaUsuario) {
        this.SenhaUsuario = SenhaUsuario;
    }

    public ArrayList<TipoPerfil> getTipoPerfilUsuario() {
        return TipoPerfilUsuario;
    }

    public void setTipoPerfilUsuario(ArrayList<TipoPerfil> TipoPerfilUsuario) {
        this.TipoPerfilUsuario = TipoPerfilUsuario;
    }

    public boolean isUsuarioAtivo() {
        return UsuarioAtivo;
    }

    public void setUsuarioAtivo(boolean UsuarioAtivo) {
        this.UsuarioAtivo = UsuarioAtivo;
    }

 
   
    private int CodigoUsuario;
    private String NomeUsuario;
    private int CodigoCPF;
    private Calendar DataCadastro;
    private String EmailUsuario;
    private String SenhaUsuario;
    private String LoginUsuario;
    private boolean UsuarioAtivo;
    private String Telefone;

    public String getTelefone() {
        return Telefone;
    }

    public void setTelefone(String Telefone) {
        this.Telefone = Telefone;
    }
    private ArrayList<TipoPerfil> TipoPerfilUsuario;
    
    public Usuario() {
        TipoPerfilUsuario = new ArrayList<TipoPerfil>();
    }
    
    /**
     *
     * @param CodigoUsuario
     * @return
     */
    public static ResultSet ConsultarUsuario(int CodigoUsuario){
        
        ParametroSQL[] ListaParametro = NovaListaParametro(1);
        
        ListaParametro[0].setNome("CD_USUARIO");
        ListaParametro[0].setValor(CodigoUsuario);
        ListaParametro[0].setTipo(Types.INTEGER);
                
        ResultSet rs = AcessoBanco.ExecutarResultSet("XXXXXXXXXXXXXXXX", ListaParametro);
        return rs;
    }

  
    
    public static void CadastrarUsuario(String NomeUsuario, String CodigoCPF, Calendar DataCadastro, String EmailUsuario,
            String LoginUsuario, String SenhaUsuario, boolean UsuarioAtivo) {

        try {

            ParametroSQL[] ListaParametro = Negocio.NovaListaParametro(7);

            ListaParametro[0].setNome("NOME");
            ListaParametro[1].setNome("CPF");
            ListaParametro[2].setNome("DATA_CADASTRO");
            ListaParametro[3].setNome("EMAIL");
            ListaParametro[4].setNome("SENHA");
            ListaParametro[5].setNome("LOGIN");
            ListaParametro[6].setNome("ATIVO");
            ListaParametro[0].setValor(NomeUsuario);
            ListaParametro[1].setValor(CodigoCPF);
            ListaParametro[3].setValor(DataCadastro);
            ListaParametro[2].setValor(EmailUsuario);
            ListaParametro[4].setValor(SenhaUsuario);
            ListaParametro[5].setValor(LoginUsuario);
            ListaParametro[6].setValor(UsuarioAtivo);
            ListaParametro[0].setTipo(Types.VARCHAR);
            ListaParametro[1].setTipo(Types.VARCHAR);
            ListaParametro[2].setTipo(Types.DATE);
            ListaParametro[3].setTipo(Types.VARCHAR);
            ListaParametro[4].setTipo(Types.VARCHAR);
            ListaParametro[5].setTipo(Types.VARCHAR);
            ListaParametro[6].setTipo(Types.TINYINT);

            AcessoBanco.ExecutarNaoQuery("CADASTRAR_USUARIO", ListaParametro);
            

        } catch (Exception ex) {
            Logger.getLogger(Negocio.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public static boolean VerificarLogin(String login, String senha) {

        Boolean valido;
        Object r;

        ParametroSQL[] ListaParametro = NovaListaParametro(2);

        ListaParametro[0].setNome("LOGIN");
        ListaParametro[0].setValor(login);
        ListaParametro[1].setNome("SENHA");
        ListaParametro[1].setValor(senha);

        r = AcessoBanco.ExecutarEscalar("XXXXXXXXXXXXXXX", ListaParametro, "valido", Types.BOOLEAN);

        valido = (Boolean) r;
        return valido;

    }

//    @Deprecated
//    public static String FormarXMLUsuario(ArrayList<Usuario> ListaUsuario) {
//
//        String xml = "<XML>";
//
//        for (Usuario iUsuario : ListaUsuario) {
//
//
//            xml += "<USUARIO";
//            xml += " CD_USU='" + iUsuario.getCodigoUsuario() + "' ";
//            xml += " NM_USU='" + iUsuario.getNomeUsuario() + "' ";
//            xml += " CD_CPF='" + iUsuario.getCodigoCPF() + "' ";
//            xml += " NM_EMAIL='" + iUsuario.getEmailUsuario() + "' ";
//            xml += " DT_CAD='" + iUsuario.getDataCadastro() + "' ";
//            xml += " IC_ATIVO='" + (iUsuario.isUsuarioAtivo() ? "1" : "0") + "' ";
//            xml += " NM_LOGIN='" + iUsuario.getLoginUsuario() + "' ";
//            xml += " NM_SENHA='" + iUsuario.getSenhaUsuario() + "' ";
//            xml += " CD_PERFL='" + iUsuario.getTipoPerfilUsuario() + "' ";
//            xml += " >";
//            xml += "<LISTA_TELEFONE>";
//
//
//            if (iUsuario.getArrayTelefoneUsuario().size() > 0) {
//                for (Telefone tel : iUsuario.getArrayTelefoneUsuario()) {
//
//                    xml += "<TELEFONE";
//                    xml += " CD_NUM='" + tel.getNumeroTelefone() + "' ";
//                    xml += " NM_LOCAL='" + tel.getLocalTelefone().local + "' ";
//                    xml += " />";
//                }
//            }
//
//            xml += "</LISTA_TELEFONE>";
//            xml += "</USUARIO>";
//
//
//        }
//
//        xml += "</XML>";
//
//        return xml;
//    }
}
